<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>JCSDK C++ API Reference: JCMediaChannel类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">JCSDK C++ API Reference
   &#160;<span id="projectnumber">2.3.3</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-attribs">Public 属性</a> &#124;
<a href="class_j_c_media_channel-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">JCMediaChannel类 参考<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html">媒体频道模块</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_j_c_media_channel_8h_source.html">JCMediaChannel.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a3221538f7b3247036b5ac6c257b2eb6d"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a3221538f7b3247036b5ac6c257b2eb6d">getChannelId</a> ()=0</td></tr>
<tr class="separator:a3221538f7b3247036b5ac6c257b2eb6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b3f681d12751fafd7445ccd22d9854f"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a3b3f681d12751fafd7445ccd22d9854f">getChannelUri</a> ()=0</td></tr>
<tr class="separator:a3b3f681d12751fafd7445ccd22d9854f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3627122b2260f7caf17a45f9b302c81"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#aa3627122b2260f7caf17a45f9b302c81">getChannelNumber</a> ()=0</td></tr>
<tr class="separator:aa3627122b2260f7caf17a45f9b302c81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4085f2a7dc5c265f5b4ef08d2819002c"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaba59b980138d98f12a87fd934cfdd55b">JCMediaChannelState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a4085f2a7dc5c265f5b4ef08d2819002c">getState</a> ()=0</td></tr>
<tr class="separator:a4085f2a7dc5c265f5b4ef08d2819002c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a2dcea81b4416b076d626301c1560de"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a0a2dcea81b4416b076d626301c1560de">getUploadLocalAudio</a> ()=0</td></tr>
<tr class="separator:a0a2dcea81b4416b076d626301c1560de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a509d42f6e791d90835d8fcd55604fc17"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a509d42f6e791d90835d8fcd55604fc17">getUploadLocalVideo</a> ()=0</td></tr>
<tr class="separator:a509d42f6e791d90835d8fcd55604fc17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f00a46f5527b53939b0b08d6f60faf2"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a3f00a46f5527b53939b0b08d6f60faf2">getAudioOutput</a> ()=0</td></tr>
<tr class="separator:a3f00a46f5527b53939b0b08d6f60faf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a197cc14d94441bedcbef5cb9a97b2abd"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a197cc14d94441bedcbef5cb9a97b2abd">getTitle</a> ()=0</td></tr>
<tr class="separator:a197cc14d94441bedcbef5cb9a97b2abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12e6030f5453414ab9e39c67de816c65"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a12e6030f5453414ab9e39c67de816c65">getScreenRenderId</a> ()=0</td></tr>
<tr class="separator:a12e6030f5453414ab9e39c67de816c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff3c7fa29f09322d33fefc7789b2bb51"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#aff3c7fa29f09322d33fefc7789b2bb51">getScreenUserId</a> ()=0</td></tr>
<tr class="separator:aff3c7fa29f09322d33fefc7789b2bb51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ae61bc03acd8cf80cd800e343369b24"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac2be7c5489851785175c20e941ffdeef">JCMediaChannelRecordState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a4ae61bc03acd8cf80cd800e343369b24">getRecordState</a> ()=0</td></tr>
<tr class="separator:a4ae61bc03acd8cf80cd800e343369b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53d757667a36bf9bd8d4174ffab4bd89"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga8d02bba7240b081d07c708ee4c838a3b">JCMediaChannelCdnState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a53d757667a36bf9bd8d4174ffab4bd89">getCdnState</a> ()=0</td></tr>
<tr class="separator:a53d757667a36bf9bd8d4174ffab4bd89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb3c17dc9d0827fe27fa189cd0a5c9e"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#afeb3c17dc9d0827fe27fa189cd0a5c9e">getSelfParticipant</a> ()=0</td></tr>
<tr class="separator:afeb3c17dc9d0827fe27fa189cd0a5c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c50e7d35a9a7a8a9cf61f7b673b7f7b"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a0c50e7d35a9a7a8a9cf61f7b673b7f7b">getPassword</a> ()=0</td></tr>
<tr class="separator:a0c50e7d35a9a7a8a9cf61f7b673b7f7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2092459c266594ed1e24a1c37528f0c3"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a2092459c266594ed1e24a1c37528f0c3">getDeliveryUri</a> ()=0</td></tr>
<tr class="separator:a2092459c266594ed1e24a1c37528f0c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac45452e8507697cc1e8c6fb7fd8d7f53"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#ac45452e8507697cc1e8c6fb7fd8d7f53">getCustomProperty</a> ()=0</td></tr>
<tr class="separator:ac45452e8507697cc1e8c6fb7fd8d7f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c672a36367e0664f8882b19f68faa33"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaa5042852bc565ec1e596a7c286ad3c64">JCMediaChannelCustomRole</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a2c672a36367e0664f8882b19f68faa33">getCustomRole</a> ()=0</td></tr>
<tr class="separator:a2c672a36367e0664f8882b19f68faa33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad155c1da6a05be33d7d6aa81eee4e736"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">JCMediaChannelCustomState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#ad155c1da6a05be33d7d6aa81eee4e736">getCustomState</a> ()=0</td></tr>
<tr class="separator:ad155c1da6a05be33d7d6aa81eee4e736"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd44cb564943ffde1ec7d5d4168e4191"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#acd44cb564943ffde1ec7d5d4168e4191">inviteSipUser</a> (const char *userId, <a class="el" href="class_j_c_media_channel_sip_param.html">JCMediaChannelSipParam</a> *sipParam)=0</td></tr>
<tr class="separator:acd44cb564943ffde1ec7d5d4168e4191"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7ccf465a6ddb05aa4ff22f5f61eab10"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#af7ccf465a6ddb05aa4ff22f5f61eab10">query</a> (const char *channelId)=0</td></tr>
<tr class="separator:af7ccf465a6ddb05aa4ff22f5f61eab10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfdb1da52955cf8b01d95527eb28890b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> (const char *channelIdOrUri, <a class="el" href="class_j_c_media_channel_join_param.html">JCMediaChannelJoinParam</a> *joinParam)=0</td></tr>
<tr class="separator:acfdb1da52955cf8b01d95527eb28890b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93c19137044fec1568f73f1f6dbfee84"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a93c19137044fec1568f73f1f6dbfee84">leave</a> ()=0</td></tr>
<tr class="separator:a93c19137044fec1568f73f1f6dbfee84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e1efd53ded5329e957e76079cfcdaf"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a75e1efd53ded5329e957e76079cfcdaf">stop</a> ()=0</td></tr>
<tr class="separator:a75e1efd53ded5329e957e76079cfcdaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b08d87b38fe2fd7a394e2786241cc4c"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a2b08d87b38fe2fd7a394e2786241cc4c">enableUploadAudioStream</a> (bool enable)=0</td></tr>
<tr class="separator:a2b08d87b38fe2fd7a394e2786241cc4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b74210bdc3f25810b901542844aee33"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a2b74210bdc3f25810b901542844aee33">enableUploadVideoStream</a> (bool enable)=0</td></tr>
<tr class="separator:a2b74210bdc3f25810b901542844aee33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0de25ae40ac1c208e08f429e4b469300"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a0de25ae40ac1c208e08f429e4b469300">setVideoCapture</a> (const char *path)=0</td></tr>
<tr class="separator:a0de25ae40ac1c208e08f429e4b469300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad165e3c09e8cc4d2c17d6ad871c2fb44"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#ad165e3c09e8cc4d2c17d6ad871c2fb44">enableAudioOutput</a> (bool enable)=0</td></tr>
<tr class="separator:ad165e3c09e8cc4d2c17d6ad871c2fb44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86fafab80af2c51a70da0c62aaa3d136"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a86fafab80af2c51a70da0c62aaa3d136">requestVideo</a> (<a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *participant, <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a> pictureSize)=0</td></tr>
<tr class="separator:a86fafab80af2c51a70da0c62aaa3d136"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ad6d27084abf660aad7a7f84fd3b9e0"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a8ad6d27084abf660aad7a7f84fd3b9e0">enableScreenOrWindowShare</a> (bool enable)=0</td></tr>
<tr class="separator:a8ad6d27084abf660aad7a7f84fd3b9e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59f139e31c8ef2190dfc4c976dcf445d"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a59f139e31c8ef2190dfc4c976dcf445d">requestScreenVideo</a> (const char *screenUri, <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a> pictureSize)=0</td></tr>
<tr class="separator:a59f139e31c8ef2190dfc4c976dcf445d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bbaf596f564ad3281429470d112c8dc"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a8bbaf596f564ad3281429470d112c8dc">enableCdn</a> (bool enable, int keyInterval)=0</td></tr>
<tr class="separator:a8bbaf596f564ad3281429470d112c8dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae42f44157b2182115f92f88bb89a113f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#ae42f44157b2182115f92f88bb89a113f">enableRecord</a> (bool enable, <a class="el" href="class_j_c_media_channel_record_param.html">JCMediaChannelRecordParam</a> *recordParam)=0</td></tr>
<tr class="separator:ae42f44157b2182115f92f88bb89a113f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fd6477db77a60df91fa615b814ac796"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a0fd6477db77a60df91fa615b814ac796">getParticipant</a> (const char *userId)=0</td></tr>
<tr class="separator:a0fd6477db77a60df91fa615b814ac796"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3baccb9d05486fb20ff8d206284f609e"><td class="memItemLeft" align="right" valign="top">virtual std::list&lt; <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a3baccb9d05486fb20ff8d206284f609e">getParticipants</a> ()=0</td></tr>
<tr class="separator:a3baccb9d05486fb20ff8d206284f609e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa67711141ad0883ad8f2dce0ea631b48"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#aa67711141ad0883ad8f2dce0ea631b48">sendMessage</a> (const char *type, const char *content, const char *toUserId)=0</td></tr>
<tr class="separator:aa67711141ad0883ad8f2dce0ea631b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fe15675d841a9c068bfd3afd18b3e90"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a6fe15675d841a9c068bfd3afd18b3e90">getStatistics</a> ()=0</td></tr>
<tr class="separator:a6fe15675d841a9c068bfd3afd18b3e90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a449c0e611118f0c46d22b26c1494caac"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a449c0e611118f0c46d22b26c1494caac">sendCommand</a> (const char *name, const char *param)=0</td></tr>
<tr class="separator:a449c0e611118f0c46d22b26c1494caac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49336d3aa083b45c5dd1768dd43ed0b1"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a49336d3aa083b45c5dd1768dd43ed0b1">sendCommandToDelivery</a> (const char *command)=0</td></tr>
<tr class="separator:a49336d3aa083b45c5dd1768dd43ed0b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3190b318a7dcca80a613cea7a93b664"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#ac3190b318a7dcca80a613cea7a93b664">setCustomProperty</a> (const char *property)=0</td></tr>
<tr class="separator:ac3190b318a7dcca80a613cea7a93b664"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b6b97e8193f2cf7f2819ec3ca49b813"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a7b6b97e8193f2cf7f2819ec3ca49b813">setCustomRole</a> (<a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaa5042852bc565ec1e596a7c286ad3c64">JCMediaChannelCustomRole</a> customRole, <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *participant)=0</td></tr>
<tr class="separator:a7b6b97e8193f2cf7f2819ec3ca49b813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86b930607cb3cfaf4ba5c51feb0e6146"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a86b930607cb3cfaf4ba5c51feb0e6146">setCustomState</a> (<a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">JCMediaChannelCustomState</a> customState, <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *participant)=0</td></tr>
<tr class="separator:a86b930607cb3cfaf4ba5c51feb0e6146"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5ee1e5334beb9ca63a8dc7110aaf6c0"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#aa5ee1e5334beb9ca63a8dc7110aaf6c0">kick</a> (<a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *participant)=0</td></tr>
<tr class="separator:aa5ee1e5334beb9ca63a8dc7110aaf6c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72e9cae1a64875ff632e3a17f51a0dd1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a72e9cae1a64875ff632e3a17f51a0dd1">enableSelfVideoRatio</a> (bool enable, float ratio)=0</td></tr>
<tr class="separator:a72e9cae1a64875ff632e3a17f51a0dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79abca7633c9b01713bc6b4db1ed72d3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_j_c_media_device_video_canvas.html">JCMediaDeviceVideoCanvas</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a79abca7633c9b01713bc6b4db1ed72d3">startScreenShareVideo</a> (void *view, <a class="el" href="group___xE8_xAE_xBE_xE5_xA4_x87_xE6_xA8_xA1_xE5_x9D_x97.html#ga3d4e0c37a074d813ff1701f250b3831d">JCMediaDeviceRenderMode</a> mode, <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a> pictureSize)=0</td></tr>
<tr class="separator:a79abca7633c9b01713bc6b4db1ed72d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e449ced4d562de27e4909cd556cdaa4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a3e449ced4d562de27e4909cd556cdaa4">stopScreenShareVideo</a> ()=0</td></tr>
<tr class="separator:a3e449ced4d562de27e4909cd556cdaa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
<tr class="memitem:a011061a9e5d4aed2ea6e6cdfb00b3d78"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_media_channel.html#a011061a9e5d4aed2ea6e6cdfb00b3d78">volumeChangeNotify</a></td></tr>
<tr class="separator:a011061a9e5d4aed2ea6e6cdfb00b3d78"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>媒体频道模块,类似音视频频道的概念，可以通过频道号加入此频道，从而进行音视频通话 </p>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="ad165e3c09e8cc4d2c17d6ad871c2fb44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad165e3c09e8cc4d2c17d6ad871c2fb44">&#9670;&nbsp;</a></span>enableAudioOutput()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableAudioOutput </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭音频输出</p>
<p>可实现本地静音功能（听不到频道内其他成员的声音），建议每次 <a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> 前设置</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否开启音频输出<ul>
<li>true: 开启</li>
<li>false: 关闭 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程，存在以下两种场景：<ul>
<li>若在调用此方法时，用户的频道状态不是已加入状态，则不会收到回调通知</li>
<li>若在调用此方法时，用户的频道状态是已加入状态，则会收到 <a class="el" href="class_j_c_media_channel_callback.html#a8ce6d3f4ac16fd55c500f8b4e27f52bb">onMediaChannelPropertyChange</a> 通知</li>
</ul>
</li>
<li>false：调用失败，不会收到回调通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a8bbaf596f564ad3281429470d112c8dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8bbaf596f564ad3281429470d112c8dc">&#9670;&nbsp;</a></span>enableCdn()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableCdn </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>keyInterval</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开关Cdn推流</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否开启Cdn推流<ul>
<li>true: 开启 Cdn 推流</li>
<li>false: 关闭 Cdn 推流 </li>
</ul>
</td></tr>
    <tr><td class="paramname">keyInterval</td><td>推流关键帧间隔(毫秒)，当 enable 为 true 时有效，有效值需要&gt;=1000 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_media_channel_callback.html#a8ce6d3f4ac16fd55c500f8b4e27f52bb">onMediaChannelPropertyChange</a> 通知</li>
<li>false：调用失败，不会收到通知回调 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="ae42f44157b2182115f92f88bb89a113f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae42f44157b2182115f92f88bb89a113f">&#9670;&nbsp;</a></span>enableRecord()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableRecord </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_record_param.html">JCMediaChannelRecordParam</a> *&#160;</td>
          <td class="paramname"><em>recordParam</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开关视频录制</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>开启或关闭视频录制<ul>
<li>true: 开启</li>
<li>false: 关闭 </li>
</ul>
</td></tr>
    <tr><td class="paramname">recordParam</td><td><a class="el" href="class_j_c_media_channel_record_param.html">JCMediaChannelRecordParam</a> 录制参数，当 enable 为 true 时，可以更改由 <a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> 时传入的录制参数，不需更改则填 null </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_media_channel_callback.html#a8ce6d3f4ac16fd55c500f8b4e27f52bb">onMediaChannelPropertyChange</a> 通知</li>
<li>false：调用失败，不会收到通知回调 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a8ad6d27084abf660aad7a7f84fd3b9e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ad6d27084abf660aad7a7f84fd3b9e0">&#9670;&nbsp;</a></span>enableScreenOrWindowShare()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableScreenOrWindowShare </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启关闭桌面屏幕共享，内部根据当前状态决定是否开启</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否开启屏幕共享<ul>
<li>true: 开启</li>
<li>false: 关闭 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用异常 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a72e9cae1a64875ff632e3a17f51a0dd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72e9cae1a64875ff632e3a17f51a0dd1">&#9670;&nbsp;</a></span>enableSelfVideoRatio()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void JCMediaChannel::enableSelfVideoRatio </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>ratio</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>设置自身视频宽高比</p>
<dl class="section note"><dt>注解</dt><dd>必须在频道中设置才能生效</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否开启自身视频宽高比<ul>
<li>true: 开启</li>
<li>false: 关闭 </li>
</ul>
</td></tr>
    <tr><td class="paramname">ratio</td><td>视频宽高比 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2b08d87b38fe2fd7a394e2786241cc4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b08d87b38fe2fd7a394e2786241cc4c">&#9670;&nbsp;</a></span>enableUploadAudioStream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableUploadAudioStream </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭发送本地音频流</p>
<p>加入会议时默认不发送本地音频流，加入后频道成员将听不到本端声音，若在加入前开启发送本地音频流，加入后频道成员将听见本端声音，建议每次 <a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> 前设置 <br  />
 会议中也可调用此方法开启或关闭发送本地音频流，服务器会更新状态并同步给其他频道成员，若关闭，则频道成员将听不到本端声音，若开启，频道成员会恢复本端声音</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否发送本地音频流<ul>
<li>true: 发送</li>
<li>false: 不发送 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true: 正常执行调用流程，存在以下两种场景：<ul>
<li>若在调用此方法时，用户的频道状态不是已加入状态，则不会收到回调通知</li>
<li>若在调用此方法时，用户的频道状态是已加入状态，则会收到 <a class="el" href="class_j_c_media_channel_callback.html#a8ce6d3f4ac16fd55c500f8b4e27f52bb">onMediaChannelPropertyChange</a> 通知</li>
</ul>
</li>
<li>false: 调用失败，不会收到回调通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a2b74210bdc3f25810b901542844aee33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b74210bdc3f25810b901542844aee33">&#9670;&nbsp;</a></span>enableUploadVideoStream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::enableUploadVideoStream </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭发送本地视频流</p>
<p>加入会议时默认发送本地视频流，若关闭发送本地视频流，加入后频道成员将看不到本端视频画面，建议每次 <a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> 前设置 <br  />
 会议中也可调用此方法开启或关闭发送本地视频流，服务器会更新状态并同步给其他频道成员，若关闭，则频道成员将看不到本端视频画面，若开启，频道成员会恢复本端视频画面</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">enable</td><td>是否发送本地视频流<ul>
<li>true: 发送</li>
<li>false: 不发送 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程，存在以下两种场景：<ul>
<li>若在调用此方法时，用户的频道状态不是已加入状态，则不会收到回调通知</li>
<li>若在调用此方法时，用户的频道状态是已加入状态，则会收到 <a class="el" href="class_j_c_media_channel_callback.html#a8ce6d3f4ac16fd55c500f8b4e27f52bb">onMediaChannelPropertyChange</a> 通知</li>
</ul>
</li>
<li>false：调用失败，不会收到回调通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a3f00a46f5527b53939b0b08d6f60faf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f00a46f5527b53939b0b08d6f60faf2">&#9670;&nbsp;</a></span>getAudioOutput()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::getAudioOutput </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取音频是否输出</p>
<p>本地没有音频输出的话，就听不到频道内其他成员的声音了</p>
<dl class="section return"><dt>返回</dt><dd>是否有音频输出<ul>
<li>true: 输出中</li>
<li>false: 未输出 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a53d757667a36bf9bd8d4174ffab4bd89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53d757667a36bf9bd8d4174ffab4bd89">&#9670;&nbsp;</a></span>getCdnState()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga8d02bba7240b081d07c708ee4c838a3b">JCMediaChannelCdnState</a> JCMediaChannel::getCdnState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得cdn推流状态</p>
<dl class="section return"><dt>返回</dt><dd>cdn推流状态：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gga8d02bba7240b081d07c708ee4c838a3bab49bc94f7495cb76dfabb68d3133ef17">JCMediaChannelCdnStateNone</a> : 无法进行Cdn推流</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gga8d02bba7240b081d07c708ee4c838a3ba864e4cba49d6f710b8a364f2d6af1f6d">JCMediaChannelCdnStateReady</a> : 可以开启Cdn推流</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gga8d02bba7240b081d07c708ee4c838a3ba13db77c97fcb34e0c27d7b87c4d8756f">JCMediaChannelCdnStateRunning</a> : Cdn推流中 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a3221538f7b3247036b5ac6c257b2eb6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3221538f7b3247036b5ac6c257b2eb6d">&#9670;&nbsp;</a></span>getChannelId()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getChannelId </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得频道标识</p>
<p>如果加入频道时使用的是 uri 模式，即调用 <a class="el" href="class_j_c_media_channel.html#acfdb1da52955cf8b01d95527eb28890b">join</a> 方法加入频道时，<a class="el" href="class_j_c_media_channel_join_param.html#ab131b669d7560fa39120df3de213854a">uriMode</a> 为 true。则获取的频道标识为""</p>
<dl class="section return"><dt>返回</dt><dd>频道标识 </dd></dl>

</div>
</div>
<a id="aa3627122b2260f7caf17a45f9b302c81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3627122b2260f7caf17a45f9b302c81">&#9670;&nbsp;</a></span>getChannelNumber()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int JCMediaChannel::getChannelNumber </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得频道号</p>
<dl class="section return"><dt>返回</dt><dd>频道号 </dd></dl>

</div>
</div>
<a id="a3b3f681d12751fafd7445ccd22d9854f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b3f681d12751fafd7445ccd22d9854f">&#9670;&nbsp;</a></span>getChannelUri()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getChannelUri </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得频道 Uri</p>
<p>不管加入频道时使用的是不是 uri 模式，都能获取到频道 Uri</p>
<dl class="section return"><dt>返回</dt><dd>频道 Uri </dd></dl>

</div>
</div>
<a id="ac45452e8507697cc1e8c6fb7fd8d7f53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac45452e8507697cc1e8c6fb7fd8d7f53">&#9670;&nbsp;</a></span>getCustomProperty()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getCustomProperty </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取频道自定义属性</p>
<dl class="section return"><dt>返回</dt><dd>自定义属性 </dd></dl>

</div>
</div>
<a id="a2c672a36367e0664f8882b19f68faa33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c672a36367e0664f8882b19f68faa33">&#9670;&nbsp;</a></span>getCustomRole()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaa5042852bc565ec1e596a7c286ad3c64">JCMediaChannelCustomRole</a> JCMediaChannel::getCustomRole </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得自定义角色</p>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaa5042852bc565ec1e596a7c286ad3c64">自定义角色</a> </dd></dl>

</div>
</div>
<a id="ad155c1da6a05be33d7d6aa81eee4e736"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad155c1da6a05be33d7d6aa81eee4e736">&#9670;&nbsp;</a></span>getCustomState()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">JCMediaChannelCustomState</a> JCMediaChannel::getCustomState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得自定义状态</p>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">自定义状态</a> </dd></dl>

</div>
</div>
<a id="a2092459c266594ed1e24a1c37528f0c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2092459c266594ed1e24a1c37528f0c3">&#9670;&nbsp;</a></span>getDeliveryUri()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getDeliveryUri </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取推流录制器成员</p>
<dl class="section return"><dt>返回</dt><dd>推流录制器成员 </dd></dl>

</div>
</div>
<a id="a0fd6477db77a60df91fa615b814ac796"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0fd6477db77a60df91fa615b814ac796">&#9670;&nbsp;</a></span>getParticipant()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a>* JCMediaChannel::getParticipant </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>userId</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>根据用户标识获取频道成员</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">userId</td><td>用户唯一标识 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>频道成员对象<ul>
<li>null：频道内无此用户标识的用户</li>
<li><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象：频道内有此用户标识的用户 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a3baccb9d05486fb20ff8d206284f609e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3baccb9d05486fb20ff8d206284f609e">&#9670;&nbsp;</a></span>getParticipants()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::list&lt;<a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a>*&gt;* JCMediaChannel::getParticipants </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得频道中的所有成员</p>
<dl class="section return"><dt>返回</dt><dd>频道成员列表 </dd></dl>

</div>
</div>
<a id="a0c50e7d35a9a7a8a9cf61f7b673b7f7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c50e7d35a9a7a8a9cf61f7b673b7f7b">&#9670;&nbsp;</a></span>getPassword()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getPassword </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得频道密码</p>
<dl class="section return"><dt>返回</dt><dd>频道密码 </dd></dl>

</div>
</div>
<a id="a4ae61bc03acd8cf80cd800e343369b24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ae61bc03acd8cf80cd800e343369b24">&#9670;&nbsp;</a></span>getRecordState()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac2be7c5489851785175c20e941ffdeef">JCMediaChannelRecordState</a> JCMediaChannel::getRecordState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取视频录制状态</p>
<dl class="section return"><dt>返回</dt><dd>视频录制状态，参见：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac2be7c5489851785175c20e941ffdeefaf8084bae069482e29317dba3daff461a">JCMediaChannelRecordStateNone</a> : 无法进行视频录制</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac2be7c5489851785175c20e941ffdeefaa16cf34d0ce9d85792cd200ffe48bd37">JCMediaChannelRecordStateReady</a> : 可以开启视频录制</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac2be7c5489851785175c20e941ffdeefa595980c1369edb24e751d886b114101f">JCMediaChannelRecordStateRunning</a> : 视频录制中 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a12e6030f5453414ab9e39c67de816c65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12e6030f5453414ab9e39c67de816c65">&#9670;&nbsp;</a></span>getScreenRenderId()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getScreenRenderId </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取屏幕共享渲染标识</p>
<dl class="section return"><dt>返回</dt><dd>屏幕共享渲染标识，频道中没有屏幕共享则返回空字符串 </dd></dl>

</div>
</div>
<a id="aff3c7fa29f09322d33fefc7789b2bb51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff3c7fa29f09322d33fefc7789b2bb51">&#9670;&nbsp;</a></span>getScreenUserId()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getScreenUserId </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取开启屏幕共享的用户标识</p>
<dl class="section return"><dt>返回</dt><dd>开启屏幕共享的用户标识，没有屏幕共享则为空字符串 </dd></dl>

</div>
</div>
<a id="afeb3c17dc9d0827fe27fa189cd0a5c9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afeb3c17dc9d0827fe27fa189cd0a5c9e">&#9670;&nbsp;</a></span>getSelfParticipant()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a>* JCMediaChannel::getSelfParticipant </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得自身 <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象</p>
<dl class="section return"><dt>返回</dt><dd>自身 <a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象 </dd></dl>

</div>
</div>
<a id="a4085f2a7dc5c265f5b4ef08d2819002c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4085f2a7dc5c265f5b4ef08d2819002c">&#9670;&nbsp;</a></span>getState()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaba59b980138d98f12a87fd934cfdd55b">JCMediaChannelState</a> JCMediaChannel::getState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>返回自己的频道状态</p>
<dl class="section return"><dt>返回</dt><dd>自己的频道状态：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggaba59b980138d98f12a87fd934cfdd55baf0f0fdcaf5717374744bc1f24adcd677">JCMediaChannelStateIdle</a> : 空闲状态</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggaba59b980138d98f12a87fd934cfdd55ba8543fa4cbb96d2d36d23d658a302bcdc">JCMediaChannelStateJoining</a> : 加入中</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggaba59b980138d98f12a87fd934cfdd55ba3179806a02aecefd7f3702c278ac8c4c">JCMediaChannelStateJoined</a> : 已加入</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggaba59b980138d98f12a87fd934cfdd55ba17c7c0fdfbb8151ca20e0569be242262">JCMediaChannelStateLeaving</a> : 离开中 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a6fe15675d841a9c068bfd3afd18b3e90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fe15675d841a9c068bfd3afd18b3e90">&#9670;&nbsp;</a></span>getStatistics()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getStatistics </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取统计信息</p>
<p>以Json字符串形式返回，其中包含 "Config"、"Network"、"Transport"、"Participants" 4个键值，示例如下：</p>
<p>{</p>
<p>"Config": "Video Config:\r\n  SRTP:           off             \r\n  Codec:          H264-SVC        \r\n  Payload:        125             \r\n  Bitrate:        1000            \r\n  Framerate:      24              \r\n  Resolution:     640x352         \r\n  FEC:            on|124|123      \r\n  FIR:            off             \r\n  Key Interval:   0               \r\n    Repeat:       0               \r\n  NACK:           off             \r\n  RTX:            off             \r\n  TMMBR:          off             \r\n  RPSI:           off             \r\n  Small NALU:     on              \r\n  ARS:            off             \r\n    BR Min:       10              \r\n    BR Max:       2000            \r\n    FR Min:       1               \r\n    FR Max:       30              \r\n  Res. Ctrl:      off             \r\n  Res. Mode:      0               \r\n  Fr Ctrl:        off             \r\n  CPU Load Ctrl:  off             \r\n    Target:       80              \r\n  Bw Efficient:   off             \r\n  Error Conceal:  off             \r\n  Enhance color:  off             \r\n  Boost bright:   off             \r\n  Boost contrast: off             \r\n  RTP Ext:        CVO             \r\n  Render Name:    N\/A             \r\n",</p>
<p>"Network": "Server(-176574541330799):\r\n4466(1): BWE(4592|1231) IN(A:0;)\r\n\r\n",</p>
<p>"Transport": "Local:  100.306884891:44795\r\nRemote: 120:14243\r\n\r\nLastPaths: 120,120\r\n\r\nPath: 120 [tcp]\r\n  Step1:Delay\/Loss(S\/R): 55\/0\/0\r\n  Cost: 65** (best: 40)\r\nPath: 151 [udp]\r\n  Step1:Delay\/Loss(S\/R): 43\/0\/0\r\n  Cost: 132\r\nPath: 105 [tcp]\r\n  Step1:Delay\/Loss(S\/R): 55\/0\/0\r\n  Cost: 142\r\nPath: 100 [tcp]\r\n  Step1:Delay\/Loss(S\/R): 43\/0\/0\r\n  Cost: 144\r\n",</p>
<p>"Participants": [{</p>
<p>"4466": "Video Sending Stats:\r\n  Packets:        0               \r\n  Capture Fr:     24              \r\n  FPS\/IDR:        0\/0             \r\n  Resolution:     640x352[0|0|0]  \r\n  Bitrate\/Setrate:0\/1000          \r\n    QP:           0               \r\n  FecPrecent:     20\r\nBe Subscribed Stats:\r\n  Audio:          true\r\n  Video:          [0|0|0|0]\r\n  Screen:         [0|0|0|0]\r\n"</p>
<p>}]</p>
<p>}</p>
<dl class="section return"><dt>返回</dt><dd>统计信息 </dd></dl>

</div>
</div>
<a id="a197cc14d94441bedcbef5cb9a97b2abd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a197cc14d94441bedcbef5cb9a97b2abd">&#9670;&nbsp;</a></span>getTitle()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCMediaChannel::getTitle </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>返回频道标题</p>
<dl class="section return"><dt>返回</dt><dd>频道标题 </dd></dl>

</div>
</div>
<a id="a0a2dcea81b4416b076d626301c1560de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a2dcea81b4416b076d626301c1560de">&#9670;&nbsp;</a></span>getUploadLocalAudio()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::getUploadLocalAudio </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取本地音频数据是否在上传</p>
<dl class="section return"><dt>返回</dt><dd>是否在上传本地音频数据<ul>
<li>true: 上传中</li>
<li>false: 未上传 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a509d42f6e791d90835d8fcd55604fc17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a509d42f6e791d90835d8fcd55604fc17">&#9670;&nbsp;</a></span>getUploadLocalVideo()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::getUploadLocalVideo </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获取本地视频数据是否在上传</p>
<dl class="section return"><dt>返回</dt><dd>是否在上传本地视频数据<ul>
<li>true: 上传中</li>
<li>false: 未上传 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="acd44cb564943ffde1ec7d5d4168e4191"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd44cb564943ffde1ec7d5d4168e4191">&#9670;&nbsp;</a></span>inviteSipUser()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int JCMediaChannel::inviteSipUser </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>userId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_sip_param.html">JCMediaChannelSipParam</a> *&#160;</td>
          <td class="paramname"><em>sipParam</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>邀请Sip用户</p>
<p>一般用于对接落地网关等</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">userId</td><td>一般为号码 </td></tr>
    <tr><td class="paramname">sipParam</td><td>SipParam 参数对象 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>&gt;0：操作id，结果通过 <a class="el" href="class_j_c_media_channel_callback.html#a25085c8e32313847c986582d45753357">onInviteSipUserResult</a> 通知</li>
<li>-1：失败，不会收到回调通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="acfdb1da52955cf8b01d95527eb28890b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfdb1da52955cf8b01d95527eb28890b">&#9670;&nbsp;</a></span>join()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::join </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>channelIdOrUri</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_join_param.html">JCMediaChannelJoinParam</a> *&#160;</td>
          <td class="paramname"><em>joinParam</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>加入频道</p>
<p>用户登录成功之后才可以调用此方法</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">channelIdOrUri</td><td>媒体频道标识或者频道Uri，当入参 <a class="el" href="class_j_c_media_channel_join_param.html">JCMediaChannelJoinParam</a> 对象的 <a class="el" href="class_j_c_media_channel_join_param.html#ab131b669d7560fa39120df3de213854a">uriMode</a> 设置为 true 时表示频道 Uri，否则表示频道标识 </td></tr>
    <tr><td class="paramname">joinParam</td><td><a class="el" href="class_j_c_media_channel_join_param.html">JCMediaChannelJoinParam</a> 对象，没有则填 null </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true: 正常执行调用流程，加入结果通过 <a class="el" href="class_j_c_media_channel_callback.html#a430bd78b28e189ee3c9564ddb7db213d">onJoin</a> 方法通知</li>
<li>false: 调用失败，存在以下两种场景：<ul>
<li>若在调用此方法时，用户的频道状态不是空闲状态，则不会收到回调通知</li>
<li>若在调用此方法时，用户的频道状态是空闲状态，则会收到 <a class="el" href="class_j_c_media_channel_callback.html#a430bd78b28e189ee3c9564ddb7db213d">onJoin</a> 方法通知 </li>
</ul>
</li>
</ul>
</dd></dl>

</div>
</div>
<a id="aa5ee1e5334beb9ca63a8dc7110aaf6c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5ee1e5334beb9ca63a8dc7110aaf6c0">&#9670;&nbsp;</a></span>kick()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::kick </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td>
          <td class="paramname"><em>participant</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>将成员踢出会议</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">participant</td><td><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象，频道中的成员 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a93c19137044fec1568f73f1f6dbfee84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93c19137044fec1568f73f1f6dbfee84">&#9670;&nbsp;</a></span>leave()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::leave </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>离开频道</p>
<p>当前只支持同时加入一个频道，结果通过 <a class="el" href="class_j_c_media_channel_callback.html#a18bc4fae89f0d56fb849075f1603ac71">onLeave</a> 通知</p>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true: 正常执行调用流程</li>
<li>false: 调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="af7ccf465a6ddb05aa4ff22f5f61eab10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7ccf465a6ddb05aa4ff22f5f61eab10">&#9670;&nbsp;</a></span>query()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int JCMediaChannel::query </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>channelId</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>查询频道相关信息</p>
<p>例如频道是否存在，频道人数等，结果通过 <a class="el" href="class_j_c_media_channel_callback.html#a864db3251f12affc38f7c95c7fdccab1">onQuery</a> 通知</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">channelId</td><td>频道标识 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>返回操作id，与 <a class="el" href="class_j_c_media_channel_callback.html#a864db3251f12affc38f7c95c7fdccab1">onQuery</a> 回调中的 operationId 对应 </dd></dl>

</div>
</div>
<a id="a59f139e31c8ef2190dfc4c976dcf445d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59f139e31c8ef2190dfc4c976dcf445d">&#9670;&nbsp;</a></span>requestScreenVideo()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::requestScreenVideo </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>screenUri</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a>&#160;</td>
          <td class="paramname"><em>pictureSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>请求屏幕共享的视频流</p>
<p>当 pictureSize 为 <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a5ede1d0beab0c56516f3a44f903d9f2c">JCMediaChannelPictureSizeNone</a> 表示关闭请求</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">screenUri</td><td>屏幕分享uri </td></tr>
    <tr><td class="paramname">pictureSize</td><td>视频请求尺寸类型，参见：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a5ede1d0beab0c56516f3a44f903d9f2c">JCMediaChannelPictureSizeNone</a> : 不渲染</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8af335d60cf86c54774b415dfeaadd67d3">JCMediaChannelPictureSizeMin</a> : 最小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8ae3dc4a6b473d076a85f00d89dc718a7e">JCMediaChannelPictureSizeSmall</a> : 小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a140d78e861f47c4bb4415ab7c8268d44">JCMediaChannelPictureSizeLarge</a> : 大尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a8af641b204055b5bd8091c21b2ca1262">JCMediaChannelPictureSizeMax</a> : 最大尺寸 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a86fafab80af2c51a70da0c62aaa3d136"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86fafab80af2c51a70da0c62aaa3d136">&#9670;&nbsp;</a></span>requestVideo()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::requestVideo </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td>
          <td class="paramname"><em>participant</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a>&#160;</td>
          <td class="paramname"><em>pictureSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>请求频道中其他用户的视频流</p>
<p>当 pictureSize 为 <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a5ede1d0beab0c56516f3a44f903d9f2c">JCMediaChannelPictureSizeNone</a> 时表示关闭请求</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">弃用:</a></b></dt><dd>从 JCSDK-2.3.1-202009101 版本开始弃用，建议使用 <a class="el" href="class_j_c_media_channel_participant.html#a238fccab8cc09e1ef843a43aad4ffac9">startVideo</a> 方法代替</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">participant</td><td>频道中其他成员对象 </td></tr>
    <tr><td class="paramname">pictureSize</td><td>视频请求的尺寸类型：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a5ede1d0beab0c56516f3a44f903d9f2c">JCMediaChannelPictureSizeNone</a> : 不渲染</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8af335d60cf86c54774b415dfeaadd67d3">JCMediaChannelPictureSizeMin</a> : 最小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8ae3dc4a6b473d076a85f00d89dc718a7e">JCMediaChannelPictureSizeSmall</a> : 小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a140d78e861f47c4bb4415ab7c8268d44">JCMediaChannelPictureSizeLarge</a> : 大尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a8af641b204055b5bd8091c21b2ca1262">JCMediaChannelPictureSizeMax</a> : 最大尺寸 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用异常 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a449c0e611118f0c46d22b26c1494caac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a449c0e611118f0c46d22b26c1494caac">&#9670;&nbsp;</a></span>sendCommand()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::sendCommand </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>param</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>发送指令<br  />
</p>
<dl class="section note"><dt>注解</dt><dd><ul>
<li>指令名: StartForward 指令作用：请求服务器开始转发音视频<br  />
 参数格式:{"MtcConfUserUriKey": "用户Uri", "MtcConfMediaOptionKey": "类型"}<br  />
 用户Uri: 通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId)<br  />
 类型: 服务器转发分三种 音频、视频、音视频，具体可参考底层mtc_conf.h下的MtcConfMedia的枚举值。<br  />
 注意1:指令发送成功后会收到 onParticipantUpdate 回调 <br  />
 举例: {"MtcConfUserUriKey": "[username:justin@sample.cloud.justalk.com]", "MtcConfMediaOptionKey": 3}<br  />
<br  />
</li>
<li>指令名: StopForward 指令作用：请求服务器停止转发音视频<br  />
 参数格式:{"MtcConfUserUriKey": "用户URL", "MtcConfMediaOptionKey": "类型"}<br  />
 用户Uri: 通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId)<br  />
 类型: 服务器转发分三种 音频、视频、音视频，具体可参考底层mtc_conf.h下的MtcConfMedia的枚举值。<br  />
 注意1:指令发送成功后会收到 onParticipantUpdate 回调 <br  />
 举例: {"MtcConfUserUriKey": "[username:justin@sample.cloud.justalk.com]", "MtcConfMediaOptionKey": 3}<br  />
<br  />
</li>
<li>指令名: ChangeTitle 指令作用：请求修改会议主题<br  />
 参数格式: {"MtcConfTitleKey":"修改的内容"}<br  />
 修改的内容: 比如原来主题设置的是"123"，现在改为"321"。<br  />
 注意1:指令发送成功后会收到 onMediaChannelPropertyChange 回调<br  />
 注意2:可通过 JCManager.shared.mediaChannel.title 获取主题<br  />
 举例:{"MtcConfTitleKey": "321"}<br  />
<br  />
</li>
<li>指令名: SetPartpProp 指令作用：批量修改成员状态，角色，昵称。<br  />
 参数格式: {"MtcConfStateKey":1,"MtcConfDisplayNameKey":"1314","MtcConfPartpLstKey":["[username:10086@sample.cloud.justalk.com]"],"MtcConfRoleKey":7}<br  />
 要修改的成员状态: 具体可参考底层 mtc_conf.h 下的 MtcConfState 的枚举值<br  />
 要修改的成员角色: 具体可参考底层 mtc_conf.h 下的 MtcConfRole 的枚举值<br  />
 要修改的成员昵称: 比如"123"<br  />
 用户Uri:通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId); <br  />
 注意1:指令发送成功后会收到 onParticipantUpdate 回调 <br  />
 注意2:MtcConfStateKey、MtcConfDisplayNameKey、MtcConfRoleKey这三个字段，可根据用户想修改哪个值，就在json字符串里面加入哪个。<br  />
 注意3:MtcConfPartpLstKey 可包含多个用户uri进行批量修改<br  />
 举例:{"MtcConfStateKey":4,"MtcConfDisplayNameKey":"123","MtcConfPartpLstKey":{"MtcConfUserUriKey":"[username:10086@sample.cloud.justalk.com]","MtcConfStateKey":4},"MtcConfRoleKey":4}<br  />
<br  />
</li>
<li>指令名：ReplayApplyMode 指令作用：设置推流布局模式<br  />
 指令参数格式：{"MtcConfCompositeModeKey": 参数值}<br  />
 参数值：<br  />
 1 平铺模式,所有视频均分平铺<br  />
 2 讲台模式,共享为大图,其他视频为小图<br  />
 3 演讲模式,共享为大图,共享者视频为小图,其他不显示<br  />
 4 自定义模式,由ReplayApplyLayout指令设置所有视频布局<br  />
 5 智能模式。<br  />
 举例：输入指令参数{"MtcConfCompositeModeKey": 2}就是讲台模式&lt;br&gt;<br  />
</li>
<li>指令名：ReplayApplyLayout 指令作用：为多用户设置自定义推流布局<br  />
 指令参数格式：{[{"MtcConfUserUriKey": "用户uri", "MtcConfPictureSizeKey": 视频尺寸,"MtcConfRectangleKey": 图像矩形的具体方位和长宽}]，...}<br  />
 用户uri：通过调用底层Mtc接口获取MtcUser.Mtc_UserFormUri((uint)EN_MTC_USER_ID_TYPE.EN_MTC_USER_ID_USERNAME，userId)<br  />
 视频尺寸：一共5个枚举值，具体枚举值请参考底层mtc_conf.h下的MtcConfPs枚举<br  />
 图像矩形的具体方位和长宽：这是一个Json格式的Array对象表示这个图像的位置和大小，第一个值是图像左上角的x坐标(0~1)<br  />
 第二个值是图像左上角的y坐标(0~1)。第三个值是图像的宽(0~1)。第四个值是图像的高(0~1)。比如[0.5,0.5,0.5,0.5]表示图像在右下角长宽是原始屏幕的一半<br  />
 举例：<br  />
 [{"MtcConfUserUriKey":"[username:zhang@xxxx.cloud.justalk.com]","MtcConfPictureSizeKey":512,"MtcConfRectangleKey":[0.5,0.5,0.5,0.5]}]<br  />
 表示成员zhang小尺寸的视频在屏幕右下角位置，长宽是原始屏幕的一半<br  />
</li>
</ul>
</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>指令名 </td></tr>
    <tr><td class="paramname">param</td><td>指令参数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a49336d3aa083b45c5dd1768dd43ed0b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49336d3aa083b45c5dd1768dd43ed0b1">&#9670;&nbsp;</a></span>sendCommandToDelivery()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::sendCommandToDelivery </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>command</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>发送命令给推流或录制器</p>
<p>发送命令给推流时，只有在频道中并且推流状态为 <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gga8d02bba7240b081d07c708ee4c838a3ba864e4cba49d6f710b8a364f2d6af1f6d">JCMediaChannelCdnStateReady</a> 才生效<br  />
 发送命令给录制器时，只有在频道中并且录制状态为 <a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac2be7c5489851785175c20e941ffdeefaa16cf34d0ce9d85792cd200ffe48bd37">JCMediaChannelRecordStateReady</a> 才生效</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">command</td><td>命令字符串 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="aa67711141ad0883ad8f2dce0ea631b48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa67711141ad0883ad8f2dce0ea631b48">&#9670;&nbsp;</a></span>sendMessage()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::sendMessage </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>content</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>toUserId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>发送消息</p>
<p>此接口调用成功后，消息接收方会收到 <a class="el" href="class_j_c_media_channel_callback.html#a6f6b72922ebc576d94f55dc153b1209d">onMessageReceive</a> 回调，通过此回调可以获取消息的文本类型和文本内容</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>消息类型 </td></tr>
    <tr><td class="paramname">content</td><td>消息内容，不能为空，并且当 toUserId 不为 null 时，content 不能大于 4k </td></tr>
    <tr><td class="paramname">toUserId</td><td>接收者id，null则发给频道所有人员 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="ac3190b318a7dcca80a613cea7a93b664"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3190b318a7dcca80a613cea7a93b664">&#9670;&nbsp;</a></span>setCustomProperty()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::setCustomProperty </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>property</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>设置频道自定义属性</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">property</td><td>自定义属性 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a7b6b97e8193f2cf7f2819ec3ca49b813"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b6b97e8193f2cf7f2819ec3ca49b813">&#9670;&nbsp;</a></span>setCustomRole()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void JCMediaChannel::setCustomRole </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gaa5042852bc565ec1e596a7c286ad3c64">JCMediaChannelCustomRole</a>&#160;</td>
          <td class="paramname"><em>customRole</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td>
          <td class="paramname"><em>participant</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>设置自定义角色</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">customRole</td><td><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggaa5042852bc565ec1e596a7c286ad3c64ad8a3c5b3903272c51d879064a1a79ee8">自定义角色</a> </td></tr>
    <tr><td class="paramname">participant</td><td><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象，传 null 表示自己 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a86b930607cb3cfaf4ba5c51feb0e6146"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86b930607cb3cfaf4ba5c51feb0e6146">&#9670;&nbsp;</a></span>setCustomState()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void JCMediaChannel::setCustomState </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">JCMediaChannelCustomState</a>&#160;</td>
          <td class="paramname"><em>customState</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> *&#160;</td>
          <td class="paramname"><em>participant</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>设置自定义状态</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">customState</td><td><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ga5947a56374ec1cbebd8665ca0b4cffc1">自定义状态</a> </td></tr>
    <tr><td class="paramname">participant</td><td><a class="el" href="class_j_c_media_channel_participant.html">JCMediaChannelParticipant</a> 对象，传 null 表示自己 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0de25ae40ac1c208e08f429e4b469300"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0de25ae40ac1c208e08f429e4b469300">&#9670;&nbsp;</a></span>setVideoCapture()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::setVideoCapture </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>设置本地视频文件替代摄像头（目前支持视频文件格式有限制，仅支持mp4，avi格式，并且只支持视频编解码H264，和音频格式PCMA)</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">path</td><td>视频文件路径 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true：正常执行调用流程</li>
<li>false：调用异常 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a79abca7633c9b01713bc6b4db1ed72d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79abca7633c9b01713bc6b4db1ed72d3">&#9670;&nbsp;</a></span>startScreenShareVideo()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_j_c_media_device_video_canvas.html">JCMediaDeviceVideoCanvas</a>* JCMediaChannel::startScreenShareVideo </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>view</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE8_xAE_xBE_xE5_xA4_x87_xE6_xA8_xA1_xE5_x9D_x97.html#ga3d4e0c37a074d813ff1701f250b3831d">JCMediaDeviceRenderMode</a>&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#gac5bab320734e36ac52c6bd3a250ddff8">JCMediaChannelPictureSize</a>&#160;</td>
          <td class="paramname"><em>pictureSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>启动频道成员的屏幕分享视频渲染</p>
<p>频道成员开启屏幕分享时，调用此方法可获得屏幕分享渲染对象 <a class="el" href="class_j_c_media_device_video_canvas.html">JCMediaDeviceVideoCanvas</a></p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">renderType</td><td>渲染模式：<ul>
<li><a class="el" href="group___xE8_xAE_xBE_xE5_xA4_x87_xE6_xA8_xA1_xE5_x9D_x97.html#gga3d4e0c37a074d813ff1701f250b3831da536c2612409e34fbf614a5f22a947f4b">JCMediaDeviceRenderModeFullScreen</a> : 铺满窗口</li>
<li><a class="el" href="group___xE8_xAE_xBE_xE5_xA4_x87_xE6_xA8_xA1_xE5_x9D_x97.html#gga3d4e0c37a074d813ff1701f250b3831da2b7b398f7d45b52fc17d4d9c552ba1a2">JCMediaDeviceRenderModeFullContent</a> : 全图像显示，会有黑边</li>
<li><a class="el" href="group___xE8_xAE_xBE_xE5_xA4_x87_xE6_xA8_xA1_xE5_x9D_x97.html#gga3d4e0c37a074d813ff1701f250b3831da23d50f1ef4ea132ce06adbf795cf89f3">JCMediaDeviceRenderModeFullAuto</a> : 自适应 </li>
</ul>
</td></tr>
    <tr><td class="paramname">pictureSize</td><td>视频请求的尺寸类型：<ul>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a5ede1d0beab0c56516f3a44f903d9f2c">JCMediaChannelPictureSizeNone</a> : 不渲染</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8af335d60cf86c54774b415dfeaadd67d3">JCMediaChannelPictureSizeMin</a> : 最小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8ae3dc4a6b473d076a85f00d89dc718a7e">JCMediaChannelPictureSizeSmall</a> : 小尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a140d78e861f47c4bb4415ab7c8268d44">JCMediaChannelPictureSizeLarge</a> : 大尺寸</li>
<li><a class="el" href="group___xE5_xAA_x92_xE4_xBD_x93_xE9_xA2_x91_xE9_x81_x93_xE6_xA8_xA1_xE5_x9D_x97.html#ggac5bab320734e36ac52c6bd3a250ddff8a8af641b204055b5bd8091c21b2ca1262">JCMediaChannelPictureSizeMax</a> : 最大尺寸 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>渲染对象 </dd></dl>

</div>
</div>
<a id="a75e1efd53ded5329e957e76079cfcdaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75e1efd53ded5329e957e76079cfcdaf">&#9670;&nbsp;</a></span>stop()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCMediaChannel::stop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>关闭频道</p>
<p>接口调用成功后，此频道内的成员都将被强制退出，自己会收到 <a class="el" href="class_j_c_media_channel_callback.html#a61a1d5a81563d34f80e70541a114a74a">onStop</a> 通知，其他成员会收到 <a class="el" href="class_j_c_media_channel_callback.html#a61a1d5a81563d34f80e70541a114a74a">onLeave</a> 通知</p>
<dl class="section return"><dt>返回</dt><dd>调用是否正常<ul>
<li>true: 正常执行调用流程，存在以下两种场景：<ul>
<li>若在调用此方法时，用户的频道状态是空闲状态，不会收到回调通知</li>
<li>若在调用此方法时，用户的频道状态不是空闲状态，则会收到 <a class="el" href="class_j_c_media_channel_callback.html#a61a1d5a81563d34f80e70541a114a74a">onStop</a> 通知</li>
</ul>
</li>
<li>false: 调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a3e449ced4d562de27e4909cd556cdaa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e449ced4d562de27e4909cd556cdaa4">&#9670;&nbsp;</a></span>stopScreenShareVideo()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void JCMediaChannel::stopScreenShareVideo </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>停止屏幕分享视频渲染 </p>

</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="a011061a9e5d4aed2ea6e6cdfb00b3d78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a011061a9e5d4aed2ea6e6cdfb00b3d78">&#9670;&nbsp;</a></span>volumeChangeNotify</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool JCMediaChannel::volumeChangeNotify</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>是否通知成员音量变化，默认不通知</p><ul>
<li>true: 通知</li>
<li>false: 不通知 </li>
</ul>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>SDK/all/include/<a class="el" href="_j_c_media_channel_8h_source.html">JCMediaChannel.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
